//////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// 
// Local axis

#include "localAxis.h"

//
//////////////////////////////////////////////////////////////////////////
localAxis::localAxis(void)
{
}


localAxis::~localAxis(void)
{
}


#if 0
//
//////////////////////////////////////////////////////////////////////////
matrix4x4 localAxis::matrixTransformation()
{

}

//
//////////////////////////////////////////////////////////////////////////
matrix4x4 localAxis::matrixInvTransformation()
{

}
#endif

//
//////////////////////////////////////////////////////////////////////////
Point3D localAxis::globaltoLocal( Point3D &pt )
{
  // translate point
  Point3D transl = pt - center;
  
  // rotate point
  Point3D pt_rot;
  pt_rot.setX(u[0]*transl[0] + u[1]*transl[1] + u[2]*transl[2]);
  pt_rot.setY(v[0]*transl[0] + v[1]*transl[1] + v[2]*transl[2]);
  pt_rot.setZ(w[0]*transl[0] + w[1]*transl[1] + w[2]*transl[2]);
  
  return pt_rot;
}

//
//////////////////////////////////////////////////////////////////////////
Point3D localAxis::localtoglobal( Point3D &pt )
{
  // rotate point
  Point3D pt_rot;
  pt_rot.setX(u[0]*pt[0] + v[0]*pt[1] + w[0]*pt[2]);
  pt_rot.setY(u[1]*pt[0] + v[1]*pt[1] + w[1]*pt[2]);
  pt_rot.setZ(u[2]*pt[0] + v[2]*pt[1] + w[2]*pt[2]);

  // translate point
  Point3D transl = pt_rot + center;

  return transl;
}
